﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Ext.Net;
using Sio.Mdm.Entities;
using Sio.Mdm.Client;
using Sio.Mdm.BF.Idm;
using Sio.Mdm.BF.Sifranti;
using Sio.Mdm.Types.Database;
using Sio.Mdm.Types;
using System.Collections.Generic;

namespace Sio.Mdm.Web.Uporabnik
{
  public partial class VlogeSeznam : Controls.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      NaloziSeznamVlog(e);
    }
    private string OrganizacijaNaziv(int organizacijaID)
    {
	  Sio.Mdm.Types.Database.Organizacija organizacija = EntityFactory.LoadEntity<Sio.Mdm.Types.Database.Organizacija>
			(new Filter<Sio.Mdm.Types.Database.Organizacija>().Where(r => r.OrganizacijaId == organizacijaID)
		);
	  if (organizacija.EntityState == EntityState.Unknown)
	  {
		return String.Empty;
	  }
	  else
	  {
		return organizacija.Naziv;
	  }
    }
    private string VlogaNaziv(int tipVlogeId)
    {
			EntityCollection<TipVloge> tipvloge = new EntityCollection<TipVloge>(
                        new Filter<TipVloge>().Where(r => r.TipVlogeId == tipVlogeId));

      if (tipvloge.Count > 0)
      {
        
        foreach (var xTipvloge in tipvloge)
        {
          return xTipvloge.Naziv;          
        }
      }
       
      return "";
    }
    private void NaloziSeznamVlog(EventArgs e)
    {
       //prebermo index Vloga_ID
       int IdmStevilka = Request.GetValue<int>("idm");
        /*
      if (IdmStevilka < 0)
      {
        IdmStevilka = 100;
      }
         */
      int OrganizacijaId = this.UserSession.Organizacija; //prebereš iz parametrov
      string podrobnosti = "";
      int vlogaId = 0;

      if (!IsPostBack && !X.IsAjaxRequest)
      {
		EntityCollection<Vloga> vloge = new EntityCollection<Vloga>(
		  new Filter<Vloga>().Where(r => (r.IdmStevilka == IdmStevilka) && (r.OrganizacijaId == OrganizacijaId)));

        DataTable table = new DataTable();

        table.Columns.AddRange(new DataColumn[] {
						new DataColumn("IdmStevilka")   { ColumnName = "IdmStevilka",    DataType = typeof(int) },
						new DataColumn("VlogaId")   { ColumnName = "VlogaId",    DataType = typeof(int) },
						new DataColumn("Organizacija")   { ColumnName = "Organizacija",    DataType = typeof(string) },
						new DataColumn("Ime")     { ColumnName = "Ime",      DataType = typeof(string) },
						new DataColumn("Priimek")    { ColumnName = "Priimek",     DataType = typeof(string) },
						new DataColumn("Spol") { ColumnName = "Spol", DataType = typeof(int) },
						new DataColumn("TipVloge") { ColumnName = "TipVloge",  DataType = typeof(string) },							
						new DataColumn("Zacetek") { ColumnName = "Zacetek", DataType = typeof(string) },
						new DataColumn("Konec") { ColumnName = "Konec", DataType = typeof(string) },
						new DataColumn("Status") { ColumnName = "Status", DataType = typeof(string) },

					});
        if (vloge.Count > 0)
        {
          int idx = 0;
          DataRow myRow;
          foreach (var xVloge in vloge)
          {
            myRow = table.NewRow();
            myRow["IdmStevilka"] = xVloge.IdmStevilka;
            myRow["VlogaId"] = xVloge.VlogaId;
            myRow["Organizacija"] = OrganizacijaNaziv(xVloge.OrganizacijaId);
            myRow["Ime"] = xVloge.Ime;
            myRow["Priimek"] = xVloge.Priimek;
            myRow["Spol"] = xVloge.Spol;
            myRow["TipVloge"] = VlogaNaziv(xVloge.TipVlogeId);
            myRow["Zacetek"] = xVloge.Zacetek;
            myRow["Konec"] = xVloge.Konec == null ? xVloge.Konec : DateTime.Now;
            switch (xVloge.Status)
            { 
              case 1:
                myRow["Status"] = "Aktivna";
                break;
              case 2:
                myRow["Status"] = "Potekla";
                break;
              case 3:
                myRow["Status"] = "Neaktivna";
                break;
              default:
                myRow["Status"] = "-";
                break;
            }
            table.Rows.Add(myRow);
            ++idx;
            podrobnosti = xVloge.Ime + " " + xVloge.Priimek;
            vlogaId = xVloge.VlogaId;
          }
        }
   	    StoreVlogeSeznam.DataSource = table;
        StoreVlogeSeznam.DataBind();

        //this.VlogeGrid.Listeners.Click.Handler = "parent.parent.addTab(parent.parent.TabNavigation, 'idUceci', 'UceciPodrobnosti.aspx?vlogaId=" + vlogaId + "','Učeči " + podrobnosti + "');";
      }
    }
  }
}
